﻿‎מטמון
=======

‎מטמון הינה דרך קלה ויעילה לשיפור ביצועי אפליקצית ווב‫.‬ על ידי אחסון תוכן סטטי בתוך המטמון וקריאתו בעת הצורך‫,‬ אנו חוסכים את הזמן הדרוש כדי ליצור את אותו תוכן‫.‬

‎שימוש במטמון ב Yii בדרך כלל דורש הגדרת רכיב מטמון וגישה אליו‫.‬ הגדרות האפליקציה הבאות מגדירות רכיב מטמון המשתמש בשיטת מטמון של memcache עם שני שרתים לאחסון התוכן במטמון‫.‬

~~~
[php]
array(
    ......
    'components'=»array(
        ......
        'cache'=»array(
            'class'=»'system.caching.CMemCache',
            'servers'=»array(
                array('host'=»'server1', 'port'=»11211, 'weight'=»60),
                array('host'=»'server2', 'port'=»11211, 'weight'=»40),
            ),
        ),
    ),
);
~~~

‎בזמן הרצת האפליקציה‫,‬ ניתן לגשת לרכיב המטמון בעזרת `Yii::app()-»cache`‫.‬

Yii מספקת רכיבי מטמון שונים אשר מאפשרים שמירה של תוכן במטמון במדיות שונות‫.‬
‎לדוגמא‫,‬ רכיב ה [CMemCache] משתמשת בתוסף של PHP בשם memcache כדי להשתמש בזכרון כמדית שמירת המטמון‫; ‬הרכיב [CApcCache] משתמש בתוסף ה PHP בשם APC‫;‬
‎ורכיב [CDbCache] שומר את המטמון במסד הנתונים‫.‬
‎להלן סיכום של רכיבי המטמון הניתנים לשימוש ב Yii‫:‬

- [CMemCache] משתמש בתוסף של PHP בשם [memcache](http://www.php.net/manual/en/book.memcache.php).

- [CApcCache] משתמש בתוסף של PHP בשם [APC](http://www.php.net/manual/en/book.apc.php).

- [CXCache] משתמש בתוסף של PHP בשם [XCache](http://xcache.lighttpd.net/). הערה, רכיב זה קיים מגרסאות 1.0.1 ומעלה.

- [CEAcceleratorCache] משתמש בתוסף של PHP בשם [EAccelerator](http://eaccelerator.net/).

- [CDbCache] משתמש בטבלה במסד הנתונים כדי לשמור את התוכן. כברירת מחדל זה יוצר ומשתמש במסד נתונים מסוג SQLite3 תחת תיקית הקבצים הזמניים באפליקציה. תוכל להגדיר את סוג מסד הנתונים לשימוש על ידי הגדרת המאפיין [connectionID|CDbCache::connectionID].

- [CZendDataCache] משתמש ברכיב של PHP בשם Zend Data Cache בתור המדיה לשמירה. הערה, רכיב זה קיים מגרסא 1.0.4 ומעלה.

- [CFileCache] משתמש בקבצים כדי לאחסן את התוכן השמור במטמון. זה מתאים במיוחד כדי לשמור חלקים גדולים של תוכן (כמו לדוגמא עמודים שלמים). הערה, רכיב זה קיים מגרסא 1.0.6 ומעלה.

- [CDummyCache] מייצג רכיב מטמון דמה אשר לא מאחסן ולא שומר כלום במטמון. המטרה של רכיב זה היא לפשט את הקוד שדורש לבדוק אם מטמון מסויים קיים. לדוגמא, במהלך פיתוח או במידה והשרת לא תומך באותו רכיב מטמון שרוצים להשתמש, אנו יכולים להשתמש ברכיב מטמון זה. כשרכיב המטמון יהיה קיים ופעיל, ניתן יהיה להחליף לאותו רכיב מטמון בקלות. בשני המקרים, אנו נשתמש באותו הקוד `Yii::app()-»cache-»get($key)` כדי לנסות ולקבל פיסת מידע מבלי לחשוש במידה ו `Yii::app()-»cache` הוא `null`. רכיב זה קיים מגרסא 1.0.5 ומעלה.


» Tip|טיפ: מאחר וכל אותם רכיבי מטמון יורשים מאותה מחלקה בסיסית [CCache] ‫,‬ ניתן להחליף‫ את סוג רכיב המטמון ללא שום שינוי בקוד היוצר וקורא את המטמון.‬

‎ניתן להשתמש במטמון בכמה רמות שונות‫.‬ ברמה הכי נמוכה‫,‬ אנו נעזרים במטמון כדי לאחסן חתיכת מידע אחת‫,‬ כמו משתנה‫,‬ ואנו קוראים לזו ‫*‬אחסון מידע‫*.‬ ברמה הבאה‫,‬ אנו שומרים במטמון חלק מעמוד הנוצר בעזרת קובץ תצוגה‫.‬ וברמה הגבוה ביותר‫,‬ אנו שומרים עמוד שלם במטמון וטוענים את אותו עמוד מהמטמון בעת הצורך‫.‬

‎בתתי נושאים הבאים‫,‬ אנו נרחיב על אופן השימוש ברכיבי המטמון השונים‫.‬

» Note|הערה: כברירת מחדל‫,‬ מטמון הוא מדיום שמירה לא אמין‫.‬ הוא לא מוודא את קיומו של התוכן במטמון‫ גם אם זמנו לא עבר.‬
‎‫לכן, רצוי לא להשתמש במטמון כמדיום שמירה קבוע (לדוגמא, לא להשתמש במטמון לשמירת מידע אודות המשתמש המחובר).‬


«div class="revision"»$Id: caching.overview.txt 2005 2010-03-04 22:42:32Z qiang.xue $«/div»